package com.hualude.roadsign.controller;

import com.hualude.roadsign.dto.*;
import com.hualude.roadsign.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * Created by feng on 2017/2/24.
 */
@Controller
@RequestMapping("/rds_user")
public class UserController {

    @Resource
    private UserService userService;

    @RequestMapping(value = "/loginCheck")
    @ResponseBody
    public JsonMsgDto loginCheck(String loginName, String passWord, String inputCode) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.loginCheck(loginName, passWord, inputCode));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/getUserById")
    @ResponseBody
    public JsonMsgDto getUserById(Integer userId) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.getUserById(userId));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/updateUserById")
    @ResponseBody
    public JsonMsgDto updateUserById(UserDto userDto) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.updateUserById(userDto));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/updatePwdById")
    @ResponseBody
    public JsonMsgDto updatePwdById(String oldPwd, String newPwd, Integer userId) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.updatePwdById(oldPwd, newPwd, userId));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/sendMQ")
    @ResponseBody
    public JsonMsgDto sendMQ(String phone, String code, String userName) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.sendMQ(phone, code, userName));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/getUser4addNotice")
    @ResponseBody
    public JsonMsgDto getUser4addNotice() {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.getUser4addNotice());
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/getVerificationCodeByLoginName")
    @ResponseBody
    public JsonMsgDto getVerificationCodeByLoginName(String loginName) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.getVerificationCodeByLoginName(loginName));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/checkVerificationCodeByLoginName")
    @ResponseBody
    public JsonMsgDto checkVerificationCodeByLoginName(String loginName, int verificationCode) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.checkVerificationCodeByLoginName(loginName, verificationCode));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/updatePwdByLoginName")
    @ResponseBody
    public JsonMsgDto updatePwdByLoginName(String newPwd, String loginName) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.updatePwdByLoginName(newPwd, loginName));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }


    @RequestMapping("/getActorNameByUserId")
    @ResponseBody
    public JsonMsgDto getActorNameByUserId(Integer userId) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.getActorNameByUserId(userId));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }


    @RequestMapping("/updateUserById4app")
    @ResponseBody
    public JsonMsgDto updateUserById4app(Integer userId, String userIcon, String userName, String userSex, String userEmail) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.updateUserById4app(userId, userIcon, userName, userSex, userEmail));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }


    @RequestMapping(value = "/getUser4DT")
    @ResponseBody
    public DTResponseDto getUser4DT(DTRequestDto dtRequestDto, Integer orgId, Integer actorId) {
        DTResponseDto dtResponseDto = new DTResponseDto();
        try {
            dtResponseDto = userService.getUser4DT(dtRequestDto, orgId, actorId);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dtResponseDto;
    }

    @RequestMapping(value = "/deactivateUserById")
    @ResponseBody
    public JsonMsgDto deactivateUserById(String userIds, Integer userState) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.deactivateUserById(userIds, userState));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/addUser")
    @ResponseBody
    public JsonMsgDto addUser(UserDto userDto) {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.addUser(userDto));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/updateUserByUserId")
    @ResponseBody
    public JsonMsgDto updateUserByUserId(UserDto userDto) throws Exception {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.updateUserByUserId(userDto));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            jsonMsgDto.setIsSuccess(false);
            e.printStackTrace();
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/getCountByLoginName")
    @ResponseBody
    public JsonMsgDto getCountByLoginName(String loginName) throws Exception {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setJsonData(userService.getCountByLoginName(loginName));
            jsonMsgDto.setIsSuccess(true);
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/getActor4Select")
    @ResponseBody
    public JsonMsgDto getActor4Select() throws Exception {
        JsonMsgDto jsonMsgD = new JsonMsgDto();
        try {
            jsonMsgD.setIsSuccess(true);
            jsonMsgD.setJsonData(userService.getActor4Select());
        } catch (Exception e) {
            jsonMsgD.setIsSuccess(false);
            e.printStackTrace();
        }
        return jsonMsgD;
    }

    @RequestMapping(value = "/deleteUserById")
    @ResponseBody
    public JsonMsgDto deleteUserById(Integer userId) throws Exception {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setIsSuccess(true);
            jsonMsgDto.setJsonData(userService.deleteUserById(userId));
        } catch (Exception e) {
            jsonMsgDto.setIsSuccess(false);
            e.printStackTrace();
        }
        return jsonMsgDto;
    }

    @RequestMapping(value = "/resetPswByUserId")
    @ResponseBody
    public JsonMsgDto resetPswByUserId(Integer userId) throws Exception {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setIsSuccess(true);
            jsonMsgDto.setJsonData(userService.resetPswByUserId(userId));
        } catch (Exception e) {
            jsonMsgDto.setIsSuccess(false);
            e.printStackTrace();
        }
        return jsonMsgDto;
    }

    @RequestMapping("/getPushTimeByUserId")
    @ResponseBody
    public JsonMsgDto getPushTimeByUserId(Integer userId) throws Exception {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setIsSuccess(true);
            jsonMsgDto.setJsonData(userService.getPushTimeByUserId(userId));
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping("/updatePushTimeByUserId")
    @ResponseBody
    public JsonMsgDto getPushTimeByUserId(UserPushTimeDto userPushTimeDto) throws Exception {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setIsSuccess(true);
            jsonMsgDto.setJsonData(userService.updatePushTimeByUserId(userPushTimeDto));
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping("/getConner4App")
    @ResponseBody
    public JsonMsgDto getConner4App(Integer orgId, Integer userId) throws Exception {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setIsSuccess(true);
            jsonMsgDto.setJsonData(userService.getConner4App(orgId, userId));
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }

    @RequestMapping("updatePushTimeByType")
    @ResponseBody
    public JsonMsgDto updatePushTimeByType(Integer userId, Integer type) throws Exception {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setIsSuccess(true);
            jsonMsgDto.setJsonData(userService.updatePushTimeByType(userId, type));
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }


    @RequestMapping("getCurrentPushList")
    @ResponseBody
    public JsonMsgDto getCurrentPushList(Integer orgId, Integer deviceType, Integer userId, String oldTime, Integer mCount, Integer mSize) throws Exception {
        JsonMsgDto jsonMsgDto = new JsonMsgDto();
        try {
            jsonMsgDto.setIsSuccess(true);
            jsonMsgDto.setJsonData(userService.getCurrentPushList(orgId, deviceType, userId, oldTime, mCount, mSize));
        } catch (Exception e) {
            e.printStackTrace();
            jsonMsgDto.setIsSuccess(false);
        }
        return jsonMsgDto;
    }


}
